//n 的第 k 个因子
/*给你两个正整数 n 和 k 。

如果正整数 i 满足 n % i == 0 ，那么我们就说正整数 i 是整数 n 的因子。

考虑整数 n 的所有因子，将它们 升序排列 。请你返回第 k 个因子。如果 n 的因子数少于 k ，请你返回 -1 。
*/
class Solution {
public:
    int kthFactor(int n, int k) {
        int count = 0;
        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                count++;
                if (count == k)
                    return i;
            }
        }
        return -1;
    }
};
//你可以获得的最大硬币数目
/*有 3n 堆数目不一的硬币，你和你的朋友们打算按以下方式分硬币：

每一轮中，你将会选出 任意 3 堆硬币（不一定连续）。
Alice 将会取走硬币数量最多的那一堆。
你将会取走硬币数量第二多的那一堆。
Bob 将会取走最后一堆。
重复这个过程，直到没有更多硬币。
给你一个整数数组 piles ，其中 piles[i] 是第 i 堆中硬币的数目。

返回你可以获得的最大硬币数目。
3 <= piles.length <= 10^5
piles.length % 3 == 0
1 <= piles[i] <= 10^4
*/
class Solution {
    int count = 0;

public:
    int maxCoins(vector<int>& piles) {
        sort(piles.begin(), piles.end());
        int k = piles.size() / 3;
        int sum = 0;
        for (int i = piles.size() - 2; k != count; i -= 2) {
            sum += piles[i];
            count++;
        }
        return sum;
    }
};
